package net.csdn.business.notify.common.pipeline.domain;

import com.alibaba.fastjson2.JSONObject;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Set;


/**
 * @ClassName TaskInfo
 * @Description 发送任务信息实体类
 * @Author zhangyl
 * @Date 2023/11/29 17:29
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TaskInfo implements Serializable, ProcessModel {

    /** 请求批次号 */
    private String batchNum;
    /** 业务编码 */
    private String businessCode;
    /** 触发动作 */
    private String act;
    /** 发送者id，当为-1时，为系统发送 */
    private String senderId;
    /** 被操作对象id，例如：项目、ISSUE、PullRequest的id */
    private String targetId;
    /** 被操作对象类型，例如：project:项目、issue:issue、pull_request:合并请求 */
    private String targetType;
    /** 操作对像所属主体的命名空间信息：{id：命名空间id;type:类型（eg:project:项目；org:组织；user:个人);path：命名空间路径；name:名称路径} */
    private JSONObject nameSpace;
    /**
     * 接收者id集合
     */
    private Set<String> receiver;
    /**
     * 接收者账号信息
     */
    private List<String> accounts;
    /**
     * 发送渠道
     */
    private Integer notifyChannel;

    /**
     * 消息类型 @link
     */
    private Integer notifyType;

    /**
     * 发送文案模型
     * notify_template_seting表存储的template是JSON(所有内容都会塞进去)
     * 不同的渠道要发送的内容不一样(比如发push会有img，而短信没有)
     * 所以会有ContentModel
     */
    private String contentModel;

    /** 触发通知动作的主体的url*/
    private String url;
    /**
     * 当前通知处理开始时间戳
     */
    private Long startTime;

    /**
     * 消息发送时间，防止消息堆积，发送时间不准确
     */
    private Date sendDate;

}
